gpt4 book ai didi

python - 多处理在Python中挂起诅咒

转载 作者:行者123 更新时间:2023-11-30 23:16:16 26 4
gpt4 key购买 nike

希望能帮到你。我尝试使用 python 和curses 编写一个终端应用程序,而对于一项工作,我被迫使用多处理。

我面临的问题是,无论我做什么,curses 在我启动多进程 p1 后都会挂起,并且我看不到“it Works”字符串。但是,如果我从方法 foo 中删除循环,它就会起作用,或者如果我将 {print "aaa"} 放入 foo()方法,终端被字符串垃圾邮件发送。

换句话说,curses 在进程完成之前处于非事件状态,尽管它应该是相反的。我怎样才能避免它?

import time
import math
import sys
import curses
from multiprocessing import Process, Value, Array

sen1= Value('f',0)

def foo():
while(True):
sen.value = 1

stdscr = curses.initscr()
curses.noecho()
stdscr.border(0)
stdscr.addstr(12, 25, "Python curses in action!")
stdscr.refresh()
p1 = Process(target=foo())
p1.start()
while true:
stdscr.addstr(1,1,"it works" !!)

最佳答案

当您启动进程(或线程)时,目标需要是您要运行的函数的引用

当你写下这个:

p1 = Process(target=foo())

您告诉 Process 目标应该是执行 foo结果,而不是 foo 本身。试试这个:

p1 = Process(target=foo)  # do not call foo

换句话说,您将从该行的 foo 中的 while True 获得无限循环。

关于python - 多处理在Python中挂起诅咒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27788663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com