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

标签 python curses

希望能帮到你。我尝试使用 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/

相关文章:

windows - 如何在 Windows 上安装 hscurses

python - 属性 BOLD 似乎在我的诅咒中不起作用

python - 3D 原点 x 的 3D 数组快速插值

python - 如何在jenkins中运行Python selenium脚本?

python - 更改具有条件的数据框列

c++ - 运动不工作 ncurses 游戏

c++ - 我可以在没有 tputs 或 putp 的情况下使用 tparm()

python - TypeError : src is not a numpy array, 既不是标量 我的代码有什么问题?

python - 为什么我一直收到 bin/sh : 1 : : not found

c++ - 我需要并发循环吗?