第一个问题是Value和Manager()之间有什么区别.值?
第二,是否可以在不使用Value的情况下共享整数变量?以下是我的示例代码.我想要的是获取一个值为整数的字典,而不是值.我所做的只是在整个过程之后改变它.有没有更简单的方法?
from multiprocessing import Process, Manager
def f(n):
n.value += 1
if __name__ == '__main__':
d = {}
p = []
for i in range(5):
d[i] = Manager().Value('i',0)
p.append(Process(target=f, args=(d[i],)))
p[i].start()
for q in p:
q.join()
for i in d:
d[i] = d[i].value
print d
Run Code Online (Sandbox Code Playgroud) 我认为问题很清楚.我想在Python中创建一个隐藏的Markov模型并绘制它的vizualization模型.所以,它就像这张图片:
![]()
有没有任何模块可以做到这一点?我用Google搜索并没有发现任何东西.
I have this main thread:
Gui.py
from gi.repository import Gtk, Gdk
import Process
import gobject
class gui():
def __init__(self):
self.window = Gtk.Window()
self.window.connect('delete-event', Gtk.main_quit)
self.box = Gtk.Box()
self.window.add(self.box)
self.label = Gtk.Label('idle')
self.box.pack_start(self.label, True, True, 0)
self.progressbar = Gtk.ProgressBar()
self.box.pack_start(self.progressbar, True, True, 0)
self.button = Gtk.Button(label='Start')
self.button.connect('clicked', self.on_button_clicked)
self.box.pack_start(self.button, True, True, 0)
self.window.show_all()
gobject.threads_init()
Gdk.threads_enter()
Gtk.main()
Gdk.threads_leave()
def working1():
self.label.set_text('working1')
t = Process.Heavy()
t.heavyworks1()
self.label.set_text('idle')
def on_button_clicked(self, widget):
Gdk.threads_enter()
working1()
Gdk.threads_leave()
if __name__ == '__main__':
gui = gui()
Run Code Online (Sandbox Code Playgroud)
This code will …
我正在使用 gtk3 创建 GUI。从而使图形用户界面和操作一起工作,我就与这个代码线程:threading.Thread(target=function).start()。没有线程,一切正常,但 GUI 将被冻结。使用线程,发生此错误:
第一个是 Segmentation fault (core dumped)
第二个是 *** glibc detected *** python: double free or corruption (!prev): 0x09154320 ***
第三个是 Gtk:ERROR:/build/buildd/gtk+3.0-3.4.2/./gtk/gtktextview.c:3726:gtk_text_view_va??lidate_onscreen: assertion failed: (priv->onscreen_validated) Aborted (core dumped)
你知道为什么会这样吗?
编辑: 我的代码:
图形用户界面
from gi.repository import Gtk, Gdk, GLib
import Process
import gobject
import threading
class gui():
def __init__(self):
self.window = Gtk.Window()
self.window.connect('delete-event', Gtk.main_quit)
self.box = Gtk.Box()
self.window.add(self.box)
self.label = Gtk.Label('idle')
self.box.pack_start(self.label, True, True, 0)
self.progressbar = Gtk.ProgressBar()
self.box.pack_start(self.progressbar, True, True, 0)
self.button = Gtk.Button(label='Start') …Run Code Online (Sandbox Code Playgroud) 我正在尝试执行一项任务,我会将某些内容分配给列表.我会用多处理来做.完成所有任务后,我想总结一下.但是,我得到的并不是我的预期.你知道为什么会这样吗?以下是示例代码.结果应为45,而不是0.
from multiprocessing import Process
def a(b):
for i in range(10):
b[i] = i
b = [0 for _ in range(10)]
p = Process(target=a, args=(b,))
p.start()
p.join()
print sum(b)
Run Code Online (Sandbox Code Playgroud) 我有一个按钮,可以打开一个filechooser.但是,我收到了这个错误:
(gui.py:9127):GTK的CRITICAL**:gtk_widget_grab_default:断言`gtk_widget_get_can_default(插件)"失败
(gui.py:9127):Gtk-CRITICAL**:_gtk_file_chooser_embed_initial_focus:断言`GTK_IS_FILE_CHOOSER_EMBED(chooser_embed)'失败
这是我的代码:
from gi.repository import Gtk
def clicked(widget):
response = filechooser.run()
if response == Gtk.ResponseType.OK:
print 'ok'
else:
print 'cancel'
filechooser.destroy()
builder = Gtk.Builder()
builder.add_from_file('gui.glade')
filechooser = builder.get_object('filechooser1')
builder.get_object('button1').connect('clicked', clicked)
builder.get_object('window1').show_all()
Gtk.main()
Run Code Online (Sandbox Code Playgroud)
你知道为什么会这样吗?
还有一个问题:我有一个文件选择器按钮.(None)如果我已经设置路径,如何使此按钮不更改我单击取消时的路径?