multiprocessing跨平台锁的使用(Windows问题)

在Windows上可能遇到,开启的子进程不会关闭的问题

参考multiprocessing官方文档:

Explicitly pass resources to child processes

On Unix a child process can make use of a shared resource created in a parent process using a global resource. However, it is better to pass the object as an argument to the constructor for the child process.

Apart from making the code (potentially) compatible with Windows this also ensures that as long as the child process is still alive the object will not be garbage collected in the parent process. This might be important if some resource is freed when the object is garbage collected in the parent process.

So for instance

from multiprocessing import Process, Lock

def f():
    ... do something using "lock" ...

if __name__ == ‘__main__‘:
    lock = Lock()
    for i in range(10):
        Process(target=f).start()

should be rewritten as

from multiprocessing import Process, Lock

def f(l):
    ... do something using "l" ...

if __name__ == ‘__main__‘:
    lock = Lock()
    for i in range(10):
        Process(target=f, args=(lock,)).start()
时间: 2024-10-11 11:41:46

multiprocessing跨平台锁的使用(Windows问题)的相关文章

使用Active Database Duplication创建跨平台Data Guard设置 (Windows/Linux) (Doc ID 881421.1)

Using Active Database Duplication to Create Cross Platform Data Guard Setup (Windows/Linux) (Doc ID 881421.1) APPLIES TO: Oracle Database Cloud Exadata Service - Version N/A and laterOracle Database Cloud Service - Version N/A and laterOracle Databas

跨平台的EVENT事件 windows linux

#ifndef _HIK_EVENT_H_ #define _HIK_EVENT_H_ #ifdef _MSC_VER #include <Windows.h> #define hik_event_handle HANDLE #else #include <pthread.h> typedef struct { bool state; bool manual_reset; pthread_mutex_t mutex; pthread_cond_t cond; }event_t; #

跨平台的EVENT事件 windows linux(转)

#ifndef _HIK_EVENT_H_ #define _HIK_EVENT_H_ #ifdef _MSC_VER #include <Windows.h> #define hik_event_handle HANDLE #else #include <pthread.h> typedef struct { bool state; bool manual_reset; pthread_mutex_t mutex; pthread_cond_t cond; }event_t; #

Windows Phone 8 锁屏背景与通知

Windows Phone 8 在锁屏背景图片是支持应用自定义的,并且在屏幕下方还支持应用通知提醒,这是一个十分吸引眼球的新功能 虽说目前已经看到很多应用已经做个了个特性今天我还是在这个里为大家相信说明一下 为后面想做这个功能的同学先铺铺路. 此文是升级到Windows Phone 8必需知道的13个特性系列的一个更新 希望这个系列可以给 Windows Phone 8开发者带来一些开发上的便利. 1. 锁屏背景 正如我说windows phone 8 是支持锁屏背景的替换的 下图是摘自MSDN

【开源】C#跨平台物联网通讯框架ServerSuperIO(SSIO)

最近学习一个框架,感谢网名:唯笑志在 分享 博客原地址:http://www.cnblogs.com/lsjwq/p/5316577.html 目       录 C#跨平台物联网通讯框架ServerSuperIO(SSIO)正式开源... 1 1.      SSIO的特点 2.      SSIO概述 3.      SSIO与SIO的区别 4.      控制模式 5.      跨平台Windows和Linux 一.SSIO的特点 轻型高性能通信框架,适用于多种应用场,轮询模式.自控模式

互斥锁和条件变量的结合使用

互斥锁一个明显的缺点是他只有两种状态:锁定和非锁定.而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,他常和互斥锁一起使用.使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程往往解开相应的互斥锁并等待条件发生变化.一旦其他的某个线程改变了条件变量,他将通知相应的条件变量唤醒一个或多个正被此条件变量阻塞的线程.这些线程将重新锁定互斥锁并重新测试条件是否满足.一般说来,条件变量被用来进行线承间的同步. 对于条件锁,通常配合一个互斥锁一起使用,以防止多个线程同时请求pt

为什么Java可以跨平台,而其他语言不行

你好 我是大福 你现在看的是大福笔记 今天复习了Java语言的概述 内容包括Java 语言的历史.语言特点及平台版本 JRE和JDK的区别 这篇文章的主题是总结下对Java语言特点中的跨平台原理. 在这之前,我们先了解下计算机语言为什么不能跨平台. 跨平台分两个层面 硬件层面 系统层面 先说硬件层面 计算机只能识别由"0"和"1"组成的二进制数. 那么随便给计算机一组0101的二进制数计算机就能识别么? 当然不是! 以人为例 人是可以识别声音的. 这样一个场景:房间

Qt:移动无边框窗体(使用Windows的SendMessage)

移动无边框窗体的代码网上很多,其原理都是一样的,但是是有问题的,我这里只是对其修正一下 网上的代码仅仅实现了两个事件 [cpp] view plain copy void EditDialog::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { m_DragPosition = event->globalPos() - this->pos(); event->accept()

如何在windows下安装GIT

Git是一个免费的.开源的版本控制软件.在Windows上安装git,一般为msysgit,官方下载地址为 http://code.google.com/p/msysgit/downloads/list 工具/原料 win7.msysgit 方法/步骤 下载:在官方网站下载最新版本. 安装:点击下一步,直到出现步骤三. 在Windows Explorer integration选项中将"Git Bash here"和"Git GUI here"打对勾. 在"