繁体   English   中英

Python线程和多处理错误?

[英]Python threading & multiprocessing error?

threading.Timermultiprocessing.Process产生另一个独立于其他主题或进程的进程吗? 示例我的代码如下所示,假设它进行了一轮if语句,使其执行multiprocessing.Processthreading.Timer ,现在是20secs,所以它仍然等待40secs来完成代码但是如果它再次执行if语句,它会得到任何错误或什么? 它会将第二轮var传递给myFunction2并在第一轮顶部执行另一个myFunction3吗?

def myFunction3():
    #some stuffs

def myFunction2(a,b):
    time.sleep(60)
    subprocess.Popen([.....],....) #with a var
    subprocess.Popen([.....],....) #with b var

def myFunction():
    if data in a:
       subprocess.Popen([.....],....)
       p = multiprocessing.Process(target=myFunction2,args=(a,b))
       p.start()
       threading.Timer(60, myFunction3).start()

if __name__=='__main__':
    while True:
       myFunction()

这个:

p = multiprocessing.Process(target=myFunction2,args=(a,b))
p.start()

将创建一个新进程并在该进程中运行myFunction2函数。

这个:

threading.Timer(60, myFunction3).start()

将在当前进程中创建一个新线程并在该线程中运行myFunction3函数。

进程可以包含多个线程,所有线程共享相同的地址空间,但进程不会彼此共享相同的地址空间。

这段代码存在一个基本问题:multiprocessing.Process使用fork()创建新进程(除非您使用的是Windows)。 通常认为在多线程应用程序中使用fork()是不好的做法; 这是一篇好文章

话虽如此,如果你小心的话,应该可以做到这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM