专门针对涉及线程和图形的项目研究Python

专门针对涉及线程和图形的项目研究Python,python,c,multithreading,user-interface,graph,Python,C,Multithreading,User Interface,Graph,我对C语言很有经验,但是对于我在我的一个类中分配的项目,我正在考虑将其作为一个项目来介绍Python。我以前从未使用过Python,但我做过一些研究,很明显GUI设计和可视化对于Python来说非常容易;但是,我在线程上找不到任何库 我的项目将有两个线程检查一个对象/类,以查看是否设置了bool,以便它可以对某些数据进行操作,并且一旦轮到它完成,它将标记另一个线程以对相同的数据进行操作。在一个图形上有几百个记录的数据点,我需要以图形方式显示 我的问题如下: Python是否有特定的库可以帮助我轻

我对C语言很有经验,但是对于我在我的一个类中分配的项目,我正在考虑将其作为一个项目来介绍Python。我以前从未使用过Python,但我做过一些研究,很明显GUI设计和可视化对于Python来说非常容易;但是,我在线程上找不到任何库

我的项目将有两个线程检查一个对象/类,以查看是否设置了bool,以便它可以对某些数据进行操作,并且一旦轮到它完成,它将标记另一个线程以对相同的数据进行操作。在一个图形上有几百个记录的数据点,我需要以图形方式显示

我的问题如下:

  • Python是否有特定的库可以帮助我轻松地显示具有数百个点的图形? 如果是这样的话,您会为Python初学者推荐哪一种

  • 哪些线程库最适合Python初学者


  • 感谢大家在这件事上的帮助。

    igraph非常适合图形可视化。如果是指打印点,请使用matplotlib

    import matplotlib as plt
    
    X = [0, 1, 2]
    Y = [0, 1, 2]
    plt.plot(X, Y)
    plt.show()
    

    线程模块是python标准库内置的。

    您可能不需要python中的线程,因为一次只能运行一个线程。搜索GIL(在这里或谷歌)。有一些模块,如
    多处理
    ,允许轻松使用基于多进程的并发。下面创建两个进程,用于打印在args关键字arg中传递的字符串。多处理的最大问题是,因为它是多进程的(并且进程有单独的地址空间),所以必须显式地处理共享对象

    import multiprocessing as mp
    
    def f(name):
      print name
    
    p = mp.Process(target=f, args=('bob',))
    q = mp.Process(target=f, args=('jeff',))
    p.start()
    q.start()
    p.join()
    q.join()
    
    有关图形,请参见matplotlib。您可以将其作为一个单独的图形库来打印和显示,也可以将其嵌入到更大的GUI库(如QT)中。下面在matplotlib中绘制一条线

    import matplotlib as plt
    
    X = [0, 1, 2]
    Y = [0, 1, 2]
    plt.plot(X, Y)
    plt.show()
    

    它还可以绘制你能想到的几乎任何类型的图形(散点、历史、3d冲浪/帧、轮廓等)。

    谢谢,这非常有用。在您的示例中,共享对象的显式句柄是什么?我没有在示例中包括,b/c没有共享任何内容。您可以将对象从一个进程传递到另一个进程,只要它们不需要看到彼此所做的更改,就不需要额外的工作。如果他们需要查看更改,那么您需要共享状态:。如果您曾经使用
    mmap
    为C中的多进程应用程序分配共享内存,那么它在功能上与此非常相似,但显然更好、更简单,因为它是Python.-1,因为这解释了Python中线程的缺点,但没有说明它们在Python中的处理(这是被请求的)。此外,GIL问题不适用于OP的用例。