小编alw*_*lin的帖子

C中的Python线程

我在C中编写了一个多线程程序.在创建线程之前,通过调用初始化了一个全局python环境Py_Initialize().然后,在每个创建的线程中,共享全局python环境,并且每个线程调用一个python方法,其参数在C中转换.一切正常,直到这里.

当我time.sleep()在加载的python模块中使用时,C程序引发了一个Segmentation Fault.此外,加载的python模块应该加载另一个C lib来继续工作.我写了以下愚蠢的计数器lib来测试它:

# python part, call the counter function
lib = ctypes.cdll.LoadLibrary(libpycount.so)
for i in xrange(10):
    lib.count()
Run Code Online (Sandbox Code Playgroud)
// C part, dummy countings
#include <stdio.h>
int counter = 1;
void
count() {
    printf("counter:%d \n", counter);
    counter++;
}
Run Code Online (Sandbox Code Playgroud)

我想这可能是因为我没有以正确的方式管理复杂的线程创建.我Non-Python created threads在python doc中找到了.

任何想法或建议?

c python multithreading

8
推荐指数
1
解决办法
1301
查看次数

C中的localtime()和gmtime()有什么区别?

我是C编程的新手.谁能告诉我在C中localtime()和gmtime()之间的差异是什么?

谢谢你!

c time

7
推荐指数
2
解决办法
2万
查看次数

我怎么知道,已成功释放已分配的空间?

有谁知道,我们如何验证分配的空间是否成功释放?在手册页中,它表示"free()不返回任何值".

c memory

6
推荐指数
2
解决办法
233
查看次数

为什么我们仍然在struct sockaddr_un中有sun_family?

我是UNIX编程的新手.通常,当我们使用本地套接字进行通信时,域始终为AF_UNIX或AF_LOCAL.所以在这种情况下,struct sockaddr_un总是用于本地通信.为什么还有"短暂的太阳家庭"?有历史原因吗?

struct sockaddr_un{
short sun_family;                /*AF_UNIX*/ 
char  sun_PATH[108];        /*path name */ 
};
Run Code Online (Sandbox Code Playgroud)

c unix sockets

2
推荐指数
1
解决办法
1369
查看次数

python中的指针?

当我试图弄清楚在Python中使用imp.load_module时,我得到了以下代码(原始页面).这是我第一次看到在Python中使用*,有些指针就像是东西吗?

提前致谢

import imp
import dbgp
info = imp.find_module(modname, dbgp.__path__)
_client = imp.load_module(modname, *info)
sys.modules["_client"] = _client
from _client import *
del sys.modules["_client"], info, _client
Run Code Online (Sandbox Code Playgroud)

python pointers

2
推荐指数
1
解决办法
669
查看次数

标签 统计

c ×4

python ×2

memory ×1

multithreading ×1

pointers ×1

sockets ×1

time ×1

unix ×1