通常在大多数 Unix 系统上,$PREFIX/bin和之间有区别$PREFIX/sbin。当安装一个软件时,管理员决定什么$PREFIX是,但作者决定哪些程序适合普通用户,哪些不适合。使用 Python可以定义distutils一组scripts并将它们安装到$PREFIX/bin. 那么如何将脚本安装到对应的sbin目录下呢?
请注意,在这种情况下,欢迎仅针对 Linux 的解决方案,因为相关软件的其他部分依赖于 iptables。
我正在尝试使用Gloss库的play函数,它接受一个事件处理函数,其第一个参数是类型Event(根据Hackage文档).我正在使用GHC 7.6.3和Gloss 1.8.0.1开发Windows.
这是我正在尝试做的草图:
import Graphics.Gloss
type GameState = [Int]
handleInputEvent :: Event -> GameState -> GameState
handleInputEvent _ = id -- Just stubbed in for now
Run Code Online (Sandbox Code Playgroud)
编译器错误是:
Not in scope: type constructor or class `Event'
Run Code Online (Sandbox Code Playgroud)
如果我进入WinGHCI并导入Graphics.Gloss并询问它的类型签名play,它看起来像这样:
play ::
Display
-> Color
-> Int
-> world
-> (world -> Picture)
-> (gloss-1.8.0.1:Graphics.Gloss.Internals.Interface.Event.Event
-> world -> world)
-> (Float -> world -> world)
-> IO ()
Run Code Online (Sandbox Code Playgroud)
我猜这与名称Event与其他模块发生冲突有关,因此不会以与Gloss中其他符号相同的方式导入.
我如何与Haskell谈论Gloss' Event?
我需要将threading应用程序转换为应用multiprocessing程序有多种原因(GIL,内存泄漏).幸运的是,线程非常孤立,只能通过Queue.Queues进行通信.这个原语也可用,multiprocessing所以一切看起来都很好.在我进入这个雷区之前,我想就即将出现的问题得到一些建议:
Queue?我需要提供一些__setstate__吗?put立即返回(比如threading Queues)吗?这基本上与确定 bash 中是否存在函数相同,只是这次它不是针对 Bash,而是针对POSIX shell:
如何判断给定名称的shell函数是否存在?
似乎没有一个典型的内置函数type是 POSIX 强制要求的,所以这个问题更加困难,甚至可能是不可能的。
我有一个在生产环境中运行的 Python 守护进程。它使用 7 到 120 个线程。最近,最小的实例(7 个线程)开始显示挂起,而所有其他实例从未显示此类问题。将 strace 附加到 python 进程显示所有线程都在调用 futex FUTEX_WAIT_PRIVATE,因此它们可能试图锁定某些内容。
你会如何调试这样的问题?
请注意,这是一个从闪存运行的生产系统,因此磁盘写入也受到限制。
当将sqlalchemy与多个方言一起使用时,仅添加方言特定的配置(例如sqlite的外键支持或postgres的server_side_cursors)会带来问题,因为所有其他方言均不了解该配置或事件。例如:
# applying postgres configuration to a sqlite3 database fails
>>> sqlalchemy.create_engine("sqlite3:///test.sqlite3", server_side_cursors=True)
...
TypeError: Invalid argument(s) 'server_side_cursors' sent to create_engine(), using configuration SQLiteDialect_pysqlite/NullPool/Engine. Please check that the keyword arguments are appropriate for this combination of components.
Run Code Online (Sandbox Code Playgroud)
但是,sqlite不需要此配置,因为它会自动流式传输结果。同样,postgres不需要启用外键支持,因为这是默认设置。
如何以一种不会破坏其他方言的方式应用该方言特定的配置?是否有一些sqlalchemy促进了此分支?有比isinstance测试更好的东西吗?
我从C++切换到Haskell并使用Gloss来制作游戏.我在main.hs中写了这个有效的代码:
import Graphics.Gloss.Interface.Pure.Game
events (EventKey (Char 'a') Down _ _) _ = RectangleWire 10 10
events _ x = x
main = play (InWindow "GameEvent" (700, 100) (10, 10))
white
100
(Circle 10.0)
id
events
(\_ world -> world)
Run Code Online (Sandbox Code Playgroud)
然后命令ghc main.hs回答:
[1 of 1] Compiling Main ( main.hs, main.o )
main.hs:3:43: Not in scope: data constructor `RectangleWire'
Run Code Online (Sandbox Code Playgroud)
即使我安装了最新版本,我的Gloss lib似乎也缺少一些功能.例如,这个代码,来自gloss-examples包的"Game Event",编译和运行完美(非常漂亮):
import Graphics.Gloss
-- | Display the last event received as text.
main
= play (InWindow "GameEvent" (700, 100) …Run Code Online (Sandbox Code Playgroud) 在Python,对象可以是尽管不是同一对象(等于==相对于is).考虑以下任意对象的序列obj1和obj2.
assert obj1 == obj2
assert obj1 is not obj2
s = set((obj1,))
del obj1
Run Code Online (Sandbox Code Playgroud)
有以获得一般且有效的方法obj1从s和obj2(对于任意大的集s发生在包含一个对象,它等于被查找的)?(似乎依赖set.intersect单身人士set的结构并不可靠.)
如果没有,为什么?
显而易见的替代方法是使用dict每个键存储为其自身值的位置.目前尚不清楚与set基于预期的方法相比,处理废物的内存量是多少.